<?php
class icp_ingreso_reporte_venta{

    function icp_ingreso_reporte_venta(){               
        $this->sql = new DmpSql();      
    }
    
    function lista_comprobantes_venta($fechai,$fechaf,$idtipo_cp,$serie,$idcliente,$idlugar,$idusuario,$orden,$idmodalidad_pago,$por_cobrar){
        if($idlugar==0){//todas los lugares
    		$concatena_lugar="";
    	}else{
    		$concatena_lugar=" AND cp_ingreso.idlugar='".$idlugar."'";
    	}
		if($idcliente==0){//todas los clientes
    		$concatena_cliente="";
    	}else{
    		$concatena_cliente=" AND (cp_ingreso.idpersona='".$idcliente."' OR cp_ingreso.idempresa='".$idcliente."')";
    	}
    	if($idusuario==0){//todos los usuarios
    		$concatena_usuario="";
    	}else{
    		$concatena_usuario=" AND cp_ingreso.idusuario='".$idusuario."'";
    	}
    	if($serie==null){//todas las series
    		$concatena_serie="";
    	}else{
    		$concatena_serie=" AND cp_ingreso.serie='".$serie."'";
    	}
    	if($idtipo_cp=="x"){//facturas y boletas//no notas de credito
    		$concatena_tipo_cp=" AND (cp_ingreso.idtipo_cp='1' OR cp_ingreso.idtipo_cp='2')  ";
    	}else{
    		if($idtipo_cp==0){
    			$concatena_tipo_cp=" ";//todos
    		}else{
    			$concatena_tipo_cp=" AND cp_ingreso.idtipo_cp='".$idtipo_cp."' ";
    		}
    	}
        if($idmodalidad_pago!=null){//por ahora va asi, hasta definir el pago en facturacion
            if($idmodalidad_pago==0){
                $concatena_forma_pago="";
            }else{
                $concatena_forma_pago=" AND cp_ingreso_modalidad_pago.idmodalidad_pago='".$idmodalidad_pago."'";
            }
        }
        
        if($por_cobrar==1){//solo las q no han sido pagadas
            //$concatena_por_cobrar=" AND (cp_ingreso.fecha_pago IS NULL OR cp_ingreso.fecha_pago='0000-00-00') AND (cp_ingreso.monto_nota_credito IS NULL OR cp_ingreso.monto_nota_credito=0) AND (cp_ingreso.esta_anulada!=1 ) ";
            $concatena_por_cobrar=" AND 
                            (cp_ingreso.fecha_pago IS NULL OR cp_ingreso.fecha_pago='0000-00-00' OR cp_ingreso.fecha_pago<='2010-12-01')
                            AND
                            (cp_ingreso.monto_nota_credito IS NULL OR cp_ingreso.monto_nota_credito=0 (SELECT fecha
                            FROM
                              cp_ingreso AS aux
                              INNER JOIN cp_ingreso_referencia ON (aux.idcp_ingreso = cp_ingreso_referencia.idcp_ingreso_referencia)
                              WHERE 
                               cp_ingreso_referencia.idcp_ingreso=cp_ingreso.idcp_ingreso) <='2010-12-01')
                            AND (cp_ingreso.esta_anulada!=1 ) ";


        }else{
            $concatena_por_cobrar="";
        }
        if($orden==1){//por fecha ascendente
    		$concatena_orden=" fecha ASC";
    	}else{
    		if($orden==2){//numero comprobante ascendente
    			$concatena_orden=" idtipo_cp, serie, numero";
    		}else{//por importe, del mas alto al menor
    			$concatena_orden=" total DESC";
    		}
    	}
        /** admision **/
        $sql="(SELECT 
          cp_ingreso.idcp_ingreso,
          cp_ingreso.idtipo_cp,
          cp_ingreso.idcp_origen,
          CAST(cp_ingreso.serie as CHAR(3)) AS serie,
          CAST(cp_ingreso.numero as CHAR(7)) AS numero,
          cp_ingreso.fecha,
          cp_ingreso.total,
          cp_ingreso.idusuario,
          cp_ingreso.esta_anulada,
          cp_ingreso.ruc,
          cp_ingreso.razon_social,
          cpv_admision.monto_afecto,
          cpv_admision.monto_inafecto,
          cpv_admision.igv,
          producto_aseguradora.nombre_producto,
          empresa.razon_social AS aseguradora,
          tipo_cp.descripcion AS tipo_cp,
          tipo_cp.codigo_pdt,
          persona.apellido_p,
          persona.apellido_m,
          persona.nombres,
          cp_ingreso_modalidad_pago.monto,
          cp_ingreso_modalidad_pago.idmodalidad_pago,
          modalidad_pago.descripcion AS modalidad_pago,
          persona1.documento_identificacion,
          cp_ingreso.fecha_pago,
          cp_ingreso.esta_pagada,
          cp_ingreso.pago_acuenta,
          usuario.usuario 
        FROM 
    	  cp_ingreso
    	  INNER JOIN cpv_admision ON (cp_ingreso.idcp_ingreso = cpv_admision.idcpv_admision)
    	  LEFT OUTER JOIN admision ON (cpv_admision.idadmision = admision.idadmision)
    	  LEFT OUTER JOIN producto_aseguradora ON (admision.idproducto_aseg = producto_aseguradora.idproducto_aseg)
    	  LEFT OUTER JOIN empresa ON (producto_aseguradora.idaseguradora = empresa.idempresa)
    	  INNER JOIN tipo_cp ON (cp_ingreso.idtipo_cp = tipo_cp.idtipo_cp)
          LEFT OUTER JOIN usuario ON (cp_ingreso.idusuario = usuario.idusuario)
    	  LEFT OUTER JOIN persona ON (cp_ingreso.idusuario = persona.idpersona)
          LEFT OUTER JOIN cp_ingreso_modalidad_pago ON (cp_ingreso.idcp_ingreso = cp_ingreso_modalidad_pago.idcp_ingreso)
          LEFT OUTER JOIN modalidad_pago ON (cp_ingreso_modalidad_pago.idmodalidad_pago = modalidad_pago.idmodalidad_pago)
          LEFT OUTER JOIN persona persona1 ON (cp_ingreso.idpersona = persona1.idpersona)
    	WHERE
    	  cp_ingreso.fecha>='".$fechai."'
    	  AND cp_ingreso.fecha<='".$fechaf."'
    	  ".$concatena_cliente."
    	  ".$concatena_lugar."
    	  ".$concatena_usuario."
    	  ".$concatena_serie."
    	  ".$concatena_tipo_cp."
          ".$concatena_forma_pago."
          ".$concatena_por_cobrar.") 
        
        UNION ";
        
        /** otro_ingreso admision **/  
        $sql.="(SELECT 
          cp_ingreso.idcp_ingreso,
          cp_ingreso.idtipo_cp,
          cp_ingreso.idcp_origen,
          CAST(cp_ingreso.serie as CHAR(3)) AS serie,
          CAST(cp_ingreso.numero as CHAR(7)) AS numero,
          cp_ingreso.fecha,
          cp_ingreso.total,
          cp_ingreso.idusuario,
          cp_ingreso.esta_anulada,
          cp_ingreso.ruc,
          cp_ingreso.razon_social,
          cp_ingreso.monto_afecto,
          cp_ingreso.monto_inafecto,
          cp_ingreso.igv,
          '--' AS nombre_producto,
          '--' AS aseguradora,
          tipo_cp.descripcion AS tipo_cp,
          tipo_cp.codigo_pdt,
          persona.apellido_p,
          persona.apellido_m,
          persona.nombres,
          cp_ingreso_modalidad_pago.monto,
          cp_ingreso_modalidad_pago.idmodalidad_pago,
          modalidad_pago.descripcion AS modalidad_pago,
          persona1.documento_identificacion,
          cp_ingreso.fecha_pago,
          cp_ingreso.esta_pagada,
          cp_ingreso.pago_acuenta,
          usuario.usuario 
        FROM 
          cp_ingreso
    	  INNER JOIN tipo_cp ON (tipo_cp.idtipo_cp = cp_ingreso.idtipo_cp)
          LEFT OUTER JOIN usuario ON (cp_ingreso.idusuario = usuario.idusuario)
    	  LEFT OUTER JOIN persona ON (cp_ingreso.idusuario = persona.idpersona)
    	  LEFT OUTER JOIN empresa ON (cp_ingreso.idempresa = empresa.idempresa)
    	  LEFT OUTER JOIN cpv_admision ON (cp_ingreso.idcp_ingreso = cpv_admision.idcpv_admision)
    	  LEFT OUTER JOIN cpv_farmacia ON (cp_ingreso.idcp_ingreso = cpv_farmacia.idcpv_farmacia)
    	  LEFT OUTER JOIN factura_aseguradora ON (cp_ingreso.idcp_ingreso = factura_aseguradora.idcp_aseguradora)
          LEFT OUTER JOIN cp_ingreso_modalidad_pago ON (cp_ingreso.idcp_ingreso = cp_ingreso_modalidad_pago.idcp_ingreso)
          LEFT OUTER JOIN modalidad_pago ON (cp_ingreso_modalidad_pago.idmodalidad_pago = modalidad_pago.idmodalidad_pago)
          LEFT OUTER JOIN persona persona1 ON (cp_ingreso.idpersona = persona1.idpersona)
    	WHERE
    	  cp_ingreso.idcp_origen='2' AND
    	  cpv_admision.idcpv_admision IS NULL AND
          cpv_farmacia.idcpv_farmacia IS NULL AND
          factura_aseguradora.idcp_aseguradora IS NULL AND
    	  cp_ingreso.fecha>='".$fechai."' AND
    	  cp_ingreso.fecha<='".$fechaf."' 
          ".$concatena_cliente."
    	  ".$concatena_lugar."
    	  ".$concatena_usuario."
    	  ".$concatena_serie."
    	  ".$concatena_tipo_cp."
          ".$concatena_forma_pago."
          ".$concatena_por_cobrar.") 
        
        UNION ";
        
        /** farmacia **/
        $sql.="(SELECT 
          cp_ingreso.idcp_ingreso,
          cp_ingreso.idtipo_cp,
          cp_ingreso.idcp_origen,
          CAST(cp_ingreso.serie as CHAR(3)) AS serie,
          CAST(cp_ingreso.numero as CHAR(7)) AS numero,
          cp_ingreso.fecha,
          cp_ingreso.total,
          cp_ingreso.idusuario,
          cp_ingreso.esta_anulada,
          cp_ingreso.ruc,
          cp_ingreso.razon_social,
          cpv_farmacia.monto_afecto,
          cpv_farmacia.monto_inafecto,
          cpv_farmacia.igv,
          producto_aseguradora.nombre_producto,
          empresa.razon_social AS aseguradora_razon_social,
          tipo_cp.descripcion,
          tipo_cp.codigo_pdt,
          persona.apellido_p,
          persona.apellido_m,
          persona.nombres,
          cp_ingreso_modalidad_pago.monto,
          cp_ingreso_modalidad_pago.idmodalidad_pago,
          modalidad_pago.descripcion AS modalidad_pago,
          persona1.documento_identificacion,
          cp_ingreso.fecha_pago,
          cp_ingreso.esta_pagada,
          cp_ingreso.pago_acuenta,
          usuario.usuario 
        FROM
    	  cp_ingreso
    	  INNER JOIN cpv_farmacia ON (cp_ingreso.idcp_ingreso = cpv_farmacia.idcpv_farmacia)
    	  INNER JOIN tipo_cp ON (cp_ingreso.idtipo_cp = tipo_cp.idtipo_cp)
          LEFT OUTER JOIN usuario ON (cp_ingreso.idusuario = usuario.idusuario)
    	  LEFT OUTER JOIN persona ON (cp_ingreso.idusuario = persona.idpersona)
    	  LEFT OUTER JOIN admision ON (cpv_farmacia.idadmision = admision.idadmision)
    	  LEFT OUTER JOIN producto_aseguradora ON (admision.idproducto_aseg = producto_aseguradora.idproducto_aseg)
    	  LEFT OUTER JOIN empresa ON (producto_aseguradora.idaseguradora = empresa.idempresa)
          LEFT OUTER JOIN cp_ingreso_modalidad_pago ON (cp_ingreso.idcp_ingreso = cp_ingreso_modalidad_pago.idcp_ingreso)
          LEFT OUTER JOIN modalidad_pago ON (cp_ingreso_modalidad_pago.idmodalidad_pago = modalidad_pago.idmodalidad_pago)
          LEFT OUTER JOIN persona persona1 ON (cp_ingreso.idpersona = persona1.idpersona)
    	WHERE
    	  cp_ingreso.fecha>='".$fechai."'
    	  AND cp_ingreso.fecha<='".$fechaf."'
    	  ".$concatena_cliente."
    	  ".$concatena_lugar."
    	  ".$concatena_usuario."
    	  ".$concatena_serie."
    	  ".$concatena_tipo_cp."
          ".$concatena_forma_pago."
          ".$concatena_por_cobrar.") 
        
        UNION ";
        
        /** otro_ingreso farmacia **/
        $sql.="(SELECT 
          cp_ingreso.idcp_ingreso,
          cp_ingreso.idtipo_cp,
          cp_ingreso.idcp_origen,
          CAST(cp_ingreso.serie as CHAR(3)) AS serie,
          CAST(cp_ingreso.numero as CHAR(7)) AS numero,
          cp_ingreso.fecha,
          cp_ingreso.total,
          cp_ingreso.idusuario,
          cp_ingreso.esta_anulada,
          cp_ingreso.ruc,
          cp_ingreso.razon_social,
          cp_ingreso.monto_afecto,
          cp_ingreso.monto_inafecto,
          cp_ingreso.igv,
          '--' AS nombre_producto,
          '--' AS aseguradora_razon_social,
          tipo_cp.descripcion,
          tipo_cp.codigo_pdt,
          persona.apellido_p,
          persona.apellido_m,
          persona.nombres,
          cp_ingreso_modalidad_pago.monto,
          cp_ingreso_modalidad_pago.idmodalidad_pago,
          modalidad_pago.descripcion AS modalidad_pago,
          persona1.documento_identificacion,
          cp_ingreso.fecha_pago,
          cp_ingreso.esta_pagada,
          cp_ingreso.pago_acuenta,
          usuario.usuario 
        FROM
    	  cp_ingreso
          INNER JOIN tipo_cp ON (cp_ingreso.idtipo_cp = tipo_cp.idtipo_cp)
          LEFT OUTER JOIN usuario ON (cp_ingreso.idusuario = usuario.idusuario)
          LEFT OUTER JOIN persona ON (cp_ingreso.idusuario = persona.idpersona)          
          LEFT OUTER JOIN cpv_admision ON (cp_ingreso.idcp_ingreso = cpv_admision.idcpv_admision)
          LEFT OUTER JOIN cpv_farmacia ON (cp_ingreso.idcp_ingreso = cpv_farmacia.idcpv_farmacia)
          LEFT OUTER JOIN factura_aseguradora ON (cp_ingreso.idcp_ingreso = factura_aseguradora.idcp_aseguradora)
          LEFT OUTER JOIN cp_ingreso_modalidad_pago ON (cp_ingreso.idcp_ingreso = cp_ingreso_modalidad_pago.idcp_ingreso)
          LEFT OUTER JOIN modalidad_pago ON (cp_ingreso_modalidad_pago.idmodalidad_pago = modalidad_pago.idmodalidad_pago)
          LEFT OUTER JOIN persona persona1 ON (cp_ingreso.idpersona = persona1.idpersona)
    	WHERE
    	  cp_ingreso.idcp_origen='1' AND
    	  cpv_admision.idcpv_admision IS NULL AND
          cpv_farmacia.idcpv_farmacia IS NULL AND
          factura_aseguradora.idcp_aseguradora IS NULL AND
    	  cp_ingreso.fecha>='".$fechai."' AND
    	  cp_ingreso.fecha<='".$fechaf."'
          ".$concatena_cliente."
    	  ".$concatena_lugar."
    	  ".$concatena_usuario."
    	  ".$concatena_serie."
    	  ".$concatena_tipo_cp."
          ".$concatena_forma_pago."
          ".$concatena_por_cobrar.") 
          
        UNION ";
        
        /** facturacion **/
        $sql.="(SELECT 
          cp_ingreso.idcp_ingreso,
          cp_ingreso.idtipo_cp,
          cp_ingreso.idcp_origen,
          CAST(cp_ingreso.serie as CHAR(3)) AS serie,
          CAST(cp_ingreso.numero as CHAR(7)) AS numero,
          cp_ingreso.fecha,
          cp_ingreso.total,
          cp_ingreso.idusuario,
          cp_ingreso.esta_anulada,
          cp_ingreso.ruc,
          cp_ingreso.razon_social,
          cp_ingreso.monto_afecto,
          cp_ingreso.monto_inafecto,
          cp_ingreso.igv,
          '--' AS nombre_producto,
          empresa.razon_social AS aseguradora,
          tipo_cp.descripcion AS tipo_cp,
          tipo_cp.codigo_pdt,
          persona.apellido_p,
          persona.apellido_m,
          persona.nombres,
          cp_ingreso_modalidad_pago.monto,
          cp_ingreso_modalidad_pago.idmodalidad_pago,
          modalidad_pago.descripcion AS modalidad_pago,
          persona1.documento_identificacion,
          cp_ingreso.fecha_pago,
          cp_ingreso.esta_pagada,
          cp_ingreso.pago_acuenta,
          usuario.usuario 
        FROM
          cp_ingreso
          INNER JOIN factura_aseguradora ON (cp_ingreso.idcp_ingreso = factura_aseguradora.idcp_aseguradora)
          INNER JOIN aseguradora ON (factura_aseguradora.idaseguradora = aseguradora.idaseguradora)
          INNER JOIN tipo_cp ON (cp_ingreso.idtipo_cp = tipo_cp.idtipo_cp)
          LEFT OUTER JOIN usuario ON (cp_ingreso.idusuario = usuario.idusuario)
          LEFT OUTER JOIN persona ON (cp_ingreso.idusuario = persona.idpersona)
          LEFT OUTER JOIN empresa ON (aseguradora.idaseguradora = empresa.idempresa)
          LEFT OUTER JOIN cp_ingreso_modalidad_pago ON (cp_ingreso.idcp_ingreso = cp_ingreso_modalidad_pago.idcp_ingreso)
          LEFT OUTER JOIN modalidad_pago ON (cp_ingreso_modalidad_pago.idmodalidad_pago = modalidad_pago.idmodalidad_pago)
          LEFT OUTER JOIN persona persona1 ON (cp_ingreso.idpersona = persona1.idpersona)
    	WHERE
    	  cp_ingreso.fecha>='".$fechai."'
    	  AND cp_ingreso.fecha<='".$fechaf."'
    	  ".$concatena_cliente."
    	  ".$concatena_lugar."
    	  ".$concatena_usuario."
    	  ".$concatena_serie."
    	  ".$concatena_tipo_cp."
          ".$concatena_forma_pago."
          ".$concatena_por_cobrar.") 
        
        UNION ";
        
        /** otro_ingreso facturacion **/
        $sql.="(SELECT 
          cp_ingreso.idcp_ingreso,
          cp_ingreso.idtipo_cp,
          cp_ingreso.idcp_origen,
          CAST(cp_ingreso.serie as CHAR(3)) AS serie,
          CAST(cp_ingreso.numero as CHAR(7)) AS numero,
          cp_ingreso.fecha,
          cp_ingreso.total,
          cp_ingreso.idusuario,
          cp_ingreso.esta_anulada,
          cp_ingreso.ruc,
          cp_ingreso.razon_social,
          cp_ingreso.monto_afecto,
          cp_ingreso.monto_inafecto,
          cp_ingreso.igv,
          '--' AS nombre_producto,
          '--' AS aseguradora,
          tipo_cp.descripcion AS tipo_cp,
          tipo_cp.codigo_pdt,
          persona.apellido_p,
          persona.apellido_m,
          persona.nombres,
          cp_ingreso_modalidad_pago.monto,
          cp_ingreso_modalidad_pago.idmodalidad_pago,
          modalidad_pago.descripcion AS modalidad_pago,
          persona1.documento_identificacion,
          cp_ingreso.fecha_pago,
          cp_ingreso.esta_pagada,
          cp_ingreso.pago_acuenta,
          usuario.usuario 
        FROM
          cp_ingreso
          INNER JOIN tipo_cp ON (cp_ingreso.idtipo_cp = tipo_cp.idtipo_cp)
          LEFT OUTER JOIN usuario ON (cp_ingreso.idusuario = usuario.idusuario)
          LEFT OUTER JOIN persona ON (cp_ingreso.idusuario = persona.idpersona)          
          LEFT OUTER JOIN cpv_admision ON (cp_ingreso.idcp_ingreso = cpv_admision.idcpv_admision)
          LEFT OUTER JOIN cpv_farmacia ON (cp_ingreso.idcp_ingreso = cpv_farmacia.idcpv_farmacia)
          LEFT OUTER JOIN factura_aseguradora ON (cp_ingreso.idcp_ingreso = factura_aseguradora.idcp_aseguradora)
          LEFT OUTER JOIN cp_ingreso_modalidad_pago ON (cp_ingreso.idcp_ingreso = cp_ingreso_modalidad_pago.idcp_ingreso)
          LEFT OUTER JOIN modalidad_pago ON (cp_ingreso_modalidad_pago.idmodalidad_pago = modalidad_pago.idmodalidad_pago)
          LEFT OUTER JOIN persona persona1 ON (cp_ingreso.idpersona = persona1.idpersona)
        WHERE
          cp_ingreso.idcp_origen='3' AND
          cpv_admision.idcpv_admision IS NULL AND
          cpv_farmacia.idcpv_farmacia IS NULL AND
          factura_aseguradora.idcp_aseguradora IS NULL AND
          cp_ingreso.fecha>='".$fechai."' AND 
          cp_ingreso.fecha<='".$fechaf."'
          ".$concatena_cliente."
    	  ".$concatena_lugar."
    	  ".$concatena_usuario."
    	  ".$concatena_serie."
    	  ".$concatena_tipo_cp."
          ".$concatena_forma_pago."
          ".$concatena_por_cobrar.") 
        ORDER BY
          ".$concatena_orden."";
        echo $sql;exit;
        $resultado=$this->sql->consultar($sql,"sigh");
    
        return $resultado;        
    }    
}
?>